home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Development / Source / DBL Pascal Library / CRC / CRC.p
Text File  |  1992-12-03  |  614b  |  31 lines

  1. unit CRC;
  2.  
  3. interface
  4.  
  5.     function CRC16 (data: Ptr; length: Size): Integer;
  6.  
  7. implementation
  8.  
  9.     function CRC16 (dataPtr: Ptr; dataLength: Size): Integer;
  10.         type
  11.             SignedBytePtr = ^SignedByte;
  12.         var
  13.             result, i, j: Integer;
  14.             aByte: SignedByte;
  15.     begin
  16.         result := 0;
  17.         for i := 1 to dataLength do
  18.             begin
  19.                 aByte := SignedBytePtr(dataPtr)^;
  20.                 data := Ptr(ORD(dataPtr) + SIZEOF(SignedByte));
  21.                 result := BXOR(result, BSL(aByte, 8));
  22.                 for j := 1 to 8 do
  23.                     if BTST(result, 15) then
  24.                         result := BXOR(BSL(result, 1), $1021)
  25.                     else
  26.                         result := BSL(result, 1);
  27.             end;
  28.         CRC16 := result;
  29.     end;
  30.  
  31. end.